"""
购物系统业务需求V1.0：（需要使用到列表技术）
购物：
        1.用户的账户里有钱
        2.用户可推一个空的购物车进商场
        3.开始购物，将自己想要的商品添加购物车
        4.打印购物小条

程序和数据流程梳理分析：
	购前：
		钱要有：money
		有足够商品：列表来存储list
		有购物车：列表list

	购中：
		是否有这个商品：
			有
				钱够不够：
					够：
						添加到购物车！
						钱减去商品价格！
						恭喜，购买成功！您的卡余额还剩xxx
					不够：
						穷鬼，钱不够！请到其他超市购买！
			没有：
				没有这个商品，别瞎弄！
	购后：
		输入Q，q: 退出：
		打印购物小条！


购物系统业务需求V2.0：
1.现在用户在进商场之前需要从10张优惠券中，随机抽取一张优惠券。
比如抽到一个空凋的8折优惠券，后面在购物的过程中，空凋就可以按照8折后的价格来购买。
2.优化购物小条的人性化打印。
	购物时间，卡余额，购物数量，购买总商品的价值。
3.添加退货功能。在购买途中，某个商品不要了，退回到购物架中！
"""
from datetime import datetime
if __name__ == '__main__':
    money=100 # 账户里的钱
    shopping_cart=[] # 空的购物车
    # 商品：名称:[id，价格，库存]
    commodity={1:['苹果',10,3],2:['牛奶',12,8],3:['面包',5,9],4:['鸡蛋',1,3,23],5:['西红柿',6.8,45],
               6:['土豆',4.2,15],7:['橄榄油',33.2,32],8:['洗发水',45,12],9:['卫生纸',30,34],10:['拼图',10,10]} # 商品
    coupon=set(commodity.keys())
    have_coupon=coupon.pop()
    print('恭喜用户，你得到了一个{}的八折优惠券'.format(commodity[have_coupon][0]))

    print('商品id\t商品名\t商品价格')
    for k,v in commodity.items():
        print(k,'\t',v[0],'\t',v[1])
    while True:
        input_select = input('购买哪个物品？')
        if input_select == 'q' or input_select == 'Q':
            break
        selected=int(input_select)
        if selected not in commodity.keys():
            print('不好意思，没有这个商品！')
        else:
            if commodity[selected][2]<=0:
                print('不好意思，商品没有了，请选择其他商品！')
            else:
                if commodity[selected][1]>money:
                    print('不好意思，您的余额不足，请选择其他商品！')
                else:
                    if selected == have_coupon:
                        money -= commodity[selected][1]*0.8
                    else:
                        money-=commodity[selected][1]
                    commodity[selected][2]-=1
                    shopping_cart.append(selected)
                    print('恭喜购买成功，您的余额还剩{:.2f}'.format(money))
    while True:
        input_select=input('是否有不想要的商品，可以退货哦~(有则输入商品id,没有则q退出)')
        if input_select == 'q' or input_select == 'Q':
            break
        selected=int(input_select)
        if selected not in shopping_cart:
            print('这个商品本来就不在你的购物车中')
        else:
            if selected == have_coupon:
                money += commodity[selected][1] * 0.8
            else:
                money += commodity[selected][1]
            shopping_cart.remove(selected)
            commodity[selected][2]+=1
            print('好的，退货成功！余额为{:.2f}'.format(money))

    print('商品名\t个数\t单价\t总价')
    sum_all = 0
    cart=set(shopping_cart)
    for i in cart:
        if i == have_coupon:
            someone= commodity[i][1] * 0.8
        else:
            someone = commodity[i][1]
        sum_someone=shopping_cart.count(i)*someone
        print('{}\t{}\t{}\t\t{:.2f}'.format(commodity[i][0],shopping_cart.count(i),someone,sum_someone))
        sum_all+=sum_someone
    print('{}时，总共：{:.2f}'.format(datetime.now().strftime("%Y-%m-%d %H:%M"),sum_all))


